using UniversalAdmin.Application.DTOs;
using UniversalAdmin.Domain.Entities;
using UniversalAdmin.Shared.Enums;

namespace UniversalAdmin.Application.Services;

public interface IDocumentService
{
    Task<PagedResultDto<DocumentDto>> GetDocumentsAsync(int page = 1, int pageSize = 10, DocumentStatus? status = null, string? keyword = null);
    Task<DocumentDto?> GetDocumentByIdAsync(Guid id);
    Task<DocumentDto> CreateDocumentAsync(CreateDocumentDto dto, Guid userId);
    Task<DocumentDto?> UpdateDocumentAsync(Guid id, UpdateDocumentDto dto);
    Task<bool> DeleteDocumentAsync(Guid id);
    Task<bool> UpdateDocumentStatusAsync(Guid id, DocumentStatus status);
    Task<IEnumerable<DocumentDto>> GetDocumentsByUserAsync(Guid userId, int page = 1, int pageSize = 10);
    Task<DocumentDto> UploadDocumentAsync(UploadDocumentDto dto, Guid userId);
    Task<IEnumerable<DocumentDto>> GetRelatedDocumentsAsync(Guid documentId, int limit = 5);
}